Serial communications links are widely used in electronic systems. Data may be serially transmitted over a wire or a differential pair of wires between a transmitter and a receiver. The data may be arranged into packets of data to facilitate management. Packets can include a checksum such as a cyclical-redundancy-check (CRC) that allow for error detection. Packets with errors can be re-transmitted. Such error recovery allows for random bit errors and provides for more robust communications or higher speeds.
FIG. 1 shows fixed-length packets. Each packet 10 contains a fixed number of bits. The fixed packet size facilitates locating the start of each packet. A bit counter may be used to count off X bits and indicate the start of the next packet.
However, if an error occurs such as a dropped bit, all downstream data may be corrupted since the start of the following packets cannot be determined. Also, fixed-size packets are undesirable since they can be inefficient. Data from various sources may not exactly fit into the fixed packet size. For example, the packet may be larger than the data that needs to be sent from one source, and it may be undesirable to have one packet carry data from two or more sources.
FIG. 2 shows variable-size packets with framing bits to mark packet locations. A special framing symbol or packet-start field 12 may be used to mark the start of each new packet. The framing symbol is a bit sequence that is never found in data payload 16 or other fields in a packet, such as sequence numbers 14. Thus when the bit stream matches the framing symbol, packet-start field 12 is detected.
When an error occurs, the next packet may begin unexpectedly. Since packet-start field 12 is a unique sequence of bits, when this unique bit sequence is detected, reception of the next packet must begin and reception of the prior packet must end. The prior packet can later be re-transmitted by sending the packet's sequence number 14 to the transmitter in a re-transmit request.
Using packet-start field 12 provides a fairly robust communications protocol. Unfortunately, packet-start field 12 increases the protocol's overhead, since the number of data bits in data payload 16 that may be sent for a period of time is reduced by the size of packet-start fields 12 that are sent. Also, sequence numbers further reduce the available bandwidth for data payload 16. Thus bandwidth efficiency is reduced because of packet-start field 12.
A go-back-N protocol may be used. When an error is detected, the receiver requests that the prior N packets be re-transmitted, where N is a predetermined number. A sliding window buffer of the last N packets may be kept by the transmitter to be re-transmitted when a go-back-N request is received from the receiver, such as in a not-acknowledgement (NACK) packet. However, the data bandwidth is still reduced because each packet includes a special unique frame-start symbol in packet-start field 12. Various other schemes and flow-control are known.
What is desired is a packet communications protocol that uses variable-size packets but does not have packet-start field 12. A packet-based communications system that does not have special control symbol to mark the start of each packet is desirable. A packet communicator that allows for error recovery without sequence numbers or packet-start fields is desirable.